This specification relates to managing system resources.
Cloud-computing is network-based computing in which collections of servers housed in data centers provide computational resources and data storage as needed to remote end users. Some cloud-computing service providers provide virtual machines hosted on one or more servers to end users and allow the end users to install and execute software applications on the virtual machines. Some cloud-computing service providers also provide access to software applications to end users through web servers running on one or more virtual machines.
A virtual machine is a software process executing on a physical host machine (e.g., a cloud-computing server). The virtual machine emulates a physical computer that can execute other software programs and access physical and/or virtual resources provided to the virtual machine through the host machine. The physical and virtual resources available to the host machine can be shared among multiple virtual machines launched on the host machine. In some implementations, a virtual machine can be assigned one or more virtual disks for data storage. Each virtual disk of the virtual machine emulates a physical hard disk drive (HDD) in terms of input/output (I/O) access operations with respect to the virtual machine. A cloud-service provider can employ different types of underlying hardware and software infrastructures to provide virtual disks for virtual machines.